iT邦幫忙

2026 iThome 鐵人賽

DAY 19
0
Security

Agentic Era,一年來 LLM 到底都挖了些什麼洞!系列 第 19 篇

Day 19. Apache Nifi 再添一筆: Groovy Shell

  • 分享至 

  • xImage
  •  

水文警告

前陣子自己在做的研究剛好打到 Apache Nifi 去,就心血來潮 Survey 了一下有什麼才有今天這篇

今天的主角是 ZeroPath,是一家成立於 2024 年的網路安全新創公司,其核心產品是一款基於 AI 原生的應用程式安全(AppSec)與靜態應用程式安全測試(SAST)平台。

然後他們今年提出了在 Apache Nifi 安裝了常用 Plugins 後的 RCE 漏洞。
https://zeropath.com/blog/nifi-cve-2026-39816-privesc-rce

(TinkerpopClientService 與 nifi-other-graph-services-nar)
Apache Nifi 本身是資料流管理平台,而 Tinkerpop 則可以讓它很方便的操作圖資料庫與圖分析系統,而它本身還是基於 Gremlin 這種語言來完成查詢的。
然而,在 Nifi 調用的過程中它使用了如下的程式來完成搜尋前的 Query 解析(yep, Meta-Programming again)

// 位於 TinkerpopClientService 的處理路徑
compiled = groovyShell.parse(s);

於是靜態流程如下:

  1. TinkerpopClientService 接收圖查詢字串。
  2. bytecodeSubmission(...) 呼叫 groovyShell.parse() 處理文字。
  3. 本機 Groovy 解析了內容
  4. 產生 TinkerPop 查詢 Bytecode。
  5. 送往遠端資料庫。

其實我覺得比較有趣的是他們的 Patch,他們認為在 Admin side 本來 run code 就沒什麼問題,重點是做權限檢查,所以有了以下修補和檢查:

@Restricted(
    restrictions = {
        @Restriction(
            requiredPermission = RequiredPermission.EXECUTE_CODE,
            explanation = "Enables configuration of scripted queries"
        )
    }
)

先去確認是否有 EXECUTE_CODE

補充個有趣的事情,一樣作為資料庫的 Neo4j 不曉得有多少人知道其實可以編寫所謂的 "User-Defined Procedures and Functions" 來新增 Cypher Query Functions,而這樣的功能其實也常常會造成不少其他的漏洞 xD


上一篇
Day 18. 還沒執行就出事?Groovy 沙箱原理與 Jenkins 的慘痛教訓
下一篇
Day 20. PWN 小教室開課啦~Heap Exploitation 101
系列文
Agentic Era,一年來 LLM 到底都挖了些什麼洞! 共 22 篇
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言